#ifndef ENGINE_RENDERSTATEOBJECT_H
#define ENGINE_RENDERSTATEOBJECT_H

enum INPUTLAYOUT_TPYE
{
	INPUTLAYOUT_TPYE_POSITION3_COLOR3 = 0
};

class RenderStateObjectManager
{
public:
	RenderStateObjectManager();
	~RenderStateObjectManager();

	void Init();

	ID3D11InputLayout* GetInputLayout(INPUTLAYOUT_TPYE type);

	unsigned int GetVBStride(INPUTLAYOUT_TPYE type);

	ID3D11RasterizerState* GetRasterizerState(D3D11_RASTERIZER_DESC Desc);

	ID3D11DepthStencilState* GetDepthStencilState(D3D11_DEPTH_STENCIL_DESC Desc);

	ID3D11BlendState* GetBlendState(D3D11_BLEND_DESC Desc);

private:
	map<INPUTLAYOUT_TPYE, ID3D11InputLayout*> m_mapInputLayouts;
};

extern RenderStateObjectManager GRenderStateObjectManager;

#endif